//因为value值可能是嵌套多层的 所以先对value值进行遍历
function formatMessage(result) {
    //声明空对象message
    var message = {};
    //对result类型进行判断
    if (typeof result === 'object') {
        //如果是object类型 通过Object.keys()方法拿到result所有的key 并存入keys变量中
        var keys = Object.keys(result);
        //对keys进行循环遍历
        for (var i = 0; i < keys.length; i++) {
            //拿到每个key对应的value值
            var item = result[keys[i]];
            //拿到key
            var key = keys[i];
            //判断item是否为数组或者长度是否为0
            if (!(item instanceof Array) || item.length === 0) {
                //如果item不是数组或者长度为0 则跳过继续向下解析
                continue;
            }
            //如果长度为1
            if (item.length === 1) {
                //拿到value值存入val变量
                var val = item[0];
                //判断val是否为对象
                if (typeof val === 'object') {
                    //如果val为对象 则进一步进行遍历
                    message[key] = formatMessage(val);
                } else {
                    //如果不是对象 就把值赋给当前的key放入message里 并去除收尾空格
                    message[key] = (val || '').trim();
                }
            }
            //如果item的长度既不是0也不是1 则说明它是一个数组
            else {
                //把message的key设置为空数组
                message[key] = [];
                //对数组进行遍历
                for (var j = 0, k = item.length; j < k; j++) {
                    message[key].push(formatMessage(item[j]));
                }
            }
        }
    }
    return message;
}

module.exports = formatMessage;
